/**
 * Copyright 2009 - ChunMap
 * 
 * 这个文件是ChunMap项目的一部分。
 * ChunMap是开源软件。
 * 你可以自由复制、传播本项目的下载包文件，但必须保持其完整性。
 * 我们不用对使用中的风险及由此造成的损失承担任何责任。
 * 详细情况请见《ChunMap许可协议》。

 * 想了解更多有关ChunMap的信息，请访问http://code.google.com/p/chunmap/
 */
package chunmap.orm;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

import chunmap.orm.sql.Sql;
import chunmap.util.Function;

public interface DataSession {
	
	public <T> T selectById(Class<T> type,Object id);

	public  <T> List<T>  selectWhere(Class<T> type,Object condition,Page page);

	public void insert(Object obj);

	public void update(Object obj);

	public int updateWhere(Object condition, Object obj ,Function filter);

	public void delete(Object obj);

	public int deleteWhere(Class<?> type,Object condition);

	public Object countWhere(Class<?> type,String count , Object condition);

	public boolean existById(Class<?> type,Object id);
	
	public void executeSql(Sql sql,Function callback);
	
	
	public void query(Class<?> type, String condition, Function callback);
	
	//------------------------------------------------

	public void createTable(Class<?> type);

	public void dropTable(Class<?> type);
	
	public void rebuildDatabase();

	// ------------------------------------------------
	
	public void begin() throws SQLException;
	public void commit() throws SQLException;
	public void rollback() throws SQLException;

	public Connection getConn();
	public void close();
	
}
